package websimulator;

public class WaterHeating 
{
    private int people;                 //familie
    private int type;                   //oppvarming type
    private int consumption;            //stroem forbruk per kvadrat meter
    private double waterHeating;    //stroem forbruk i aar
    private double Cj = 4186; //Spesifikk varmekapasitet til vann i J(gram/grader)
    private double size;      //Størrelse på varmtvannstank
    private double waterHeatingHour; //Strømforbruk på time
    private int time; //tiden på døgnet
    
    
    /*** 
     * @param _people
     * @param _type - 1 = Forhåndsbereder, 2 = gjennomstrømningsbereder, 
     * 3 = Gass
     * @param _time 
     */
    public WaterHeating(int _people, int _type, int _time)
    {
        people = _people;
        type = _type;
        time = _time;
    }
    
    public double Demo()
    {
        type();
        return waterHeating;
    }
    /**
     * Metode for å skjekke hvordan oppvarming av vannet fungerer
     * Regner ut forbruk etter hvilken type som blir brukt.
     */
    public void type()
    {
        if (type == 1) //Forhåndsbereder
        {
            //size = 200;
            consumption = ((90) + (int)(Math.random() * (120 - (90) + 1))) * people;
            waterHeating = ((consumption * Cj * 50)/3600); 
        }
        if (type == 2) //Gjennomstrømningsvarmer    
        {   
            consumption = ((90) + (int)(Math.random() * (150 - (90) + 1))) * people;
            waterHeating = ((consumption * Cj * 60)/24) / ((1.15) + (int)(Math.random() * (1.2 - (1.15) + 1)));
            
        }
        if (type == 3) //Gass
        {
            waterHeating = 0;
        }
    }
    
    /**
     * Her setter vi hva tiden er
     * @param _time 
     */
    public void setTime(int _time) {
		time = time;
	}
    
    /**
     * 
     * @return En variabel som er +- 5% av times forbruket. 
     */
    public double varians()
    {
        double min, max;
        min = waterHeatingHour * -0.05;
        max = waterHeatingHour * 0.05;
        
       double var = ((min) + (int)(Math.random() * (max - (min) + 1))); 
       return var;
       
    }
    
    /**
     * Dags demonstrasjon som tar utgangspunkt i selve kalkulasjonen for ett døgn
     * 
     */
    public double dayDemonstration()
    {
        Demo();
        if (time >= 0 && time <= 5) {
			waterHeatingHour = (waterHeating * 0.004);
		} else if (time >= 6 && time <= 8) {
			waterHeatingHour = (waterHeating * 0.09);
                        waterHeatingHour += varians();
		} else if (time >= 9 && time <= 14) {
			waterHeatingHour = (waterHeating * 0.015);
                        waterHeatingHour += varians();
		} else if (time >= 15 && time <= 17) {
			waterHeatingHour = (waterHeating * 0.03);
                        waterHeatingHour += varians();
		} else if (time >= 18 && time <= 22) {
			waterHeatingHour = (waterHeating * 0.09);
                        waterHeatingHour += varians();
		} else if (time >= 23 && time <= 24) {
			waterHeatingHour = (waterHeating * 0.04);
                        waterHeatingHour += varians();
		}
        return waterHeatingHour;
    }
}
